package pe.com.bbva.modpre.dominio;

import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

import pe.com.bbva.modpre.dominio.util.AuditoriaBean;
import pe.com.bbva.modpre.utileria.Constante;

/**
 * The persistent class for the SOL_SOLICITUD database table.
 * 
 */
@Entity
@Table(name="SOL_SOLICITUD")
@SuppressWarnings("serial")
public class Solicitud extends AuditoriaBean {

	@Id
	@Column(unique=true, nullable=false, precision=16)
	@GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_SOLICITUD")
	@TableGenerator(name = "SEQ_SOLICITUD", table = "SEQ_ENTIDAD", pkColumnName = "ENTIDAD", initialValue = 1,
	valueColumnName = "ULTIMO_ID", pkColumnValue = "pe.com.bbva.modpre.dominio.Solicitud", allocationSize = 1)
	private Long id;

	@Column(length=50)
	private String cargo;

	@Column(length=50)
	private String empresa;

	@Column(precision=16, scale=2)
	private BigDecimal monto;
	
	@Column(length=20)
	private String numero;

	//uni-directional many-to-one association to Valor
	@ManyToOne
	@JoinColumn(name="CLASIFICACION_SBS")
	private Valor clasificacionSBS;

	//uni-directional many-to-one association to Valor
	@ManyToOne
	@JoinColumn(name="CLASIFICACION_BBVA")
	private Valor clasificacionBBVA;

	//bi-directional many-to-one association to Valor
	@ManyToOne
	@JoinColumn(name="MONEDA")
	private Valor moneda;
	
	//uni-directional many-to-one association to Cliente
	@ManyToOne
	@JoinColumn(name="CLIENTE")
	@NotNull(message=Constante.CODIGO_MENSAJE.VALIDAR_TEXTBOX)
	private Cliente cliente;

	//uni-directional many-to-one association to Segmento
	@ManyToOne
	@JoinColumn(name="SEGMENTO")
	private Segmento segmento;

	//uni-directional many-to-one association to Equipo
	@ManyToOne
	@JoinColumn(name="EQUIPO")
	private Equipo equipo;

	//uni-directional many-to-one association to Usuario
	@ManyToOne
	@JoinColumn(name="RESPONSABLE")
	private Usuario responsable;

	//uni-directional many-to-one association to Equipo
	@ManyToOne
	@JoinColumn(name="EQUIPO_ANTERIOR")
	private Equipo equipoAnterior;

	//uni-directional many-to-one association to Usuario
	@ManyToOne
	@JoinColumn(name="RESPONSABLE_ANTERIOR")
	private Usuario responsableAnterior;
	
	//uni-directional many-to-one association to Estado
	@ManyToOne
	@JoinColumn(name="ESTADO")
	private Estado estado;

	//uni-directional many-to-one association to TipoBanca
	@ManyToOne
	@JoinColumn(name="TIPO_BANCA")
	private TipoBanca tipoBanca;

	//uni-directional many-to-one association to Ans
	@ManyToOne
	@JoinColumn(name="ANS")
	private Ans ans;
	
	//bi-directional many-to-one association to Valor
	@ManyToOne
	@JoinColumn(name="MOTIVO_CANCELAR")
	private Valor motivoCancelar;

	@Column(name="CODIGO_REGION_TERRITORIO", length=20)
	private String codigoRegionTerritorio;

	@Column(name="NOMBRE_REGION_TERRITORIO", length=100)
	private String nombreRegionTerritorio;

	@Column(name="CODIGO_OFICINA", length=20)
	private String codigoOficina;

	@Column(name="NOMBRE_OFICINA", length=100)
	private String nombreOficina;
	
	@Column(name="EMPRESA_TOP")
	private Integer empresaTop;
	
	@Column
	private Boolean leido;
	
	@Column(name="FECHA_ESTADO")
	private Date fechaEstado;
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getCargo() {
		return cargo;
	}

	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	public String getEmpresa() {
		return empresa;
	}

	public void setEmpresa(String empresa) {
		this.empresa = empresa;
	}

	public BigDecimal getMonto() {
		return monto;
	}

	public void setMonto(BigDecimal monto) {
		this.monto = monto;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public Valor getClasificacionSBS() {
		return clasificacionSBS;
	}

	public void setClasificacionSBS(Valor clasificacionSBS) {
		this.clasificacionSBS = clasificacionSBS;
	}

	public Valor getClasificacionBBVA() {
		return clasificacionBBVA;
	}

	public void setClasificacionBBVA(Valor clasificacionBBVA) {
		this.clasificacionBBVA = clasificacionBBVA;
	}

	public Valor getMoneda() {
		return moneda;
	}

	public void setMoneda(Valor moneda) {
		this.moneda = moneda;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Segmento getSegmento() {
		return segmento;
	}

	public void setSegmento(Segmento segmento) {
		this.segmento = segmento;
	}

	public Equipo getEquipo() {
		return equipo;
	}

	public void setEquipo(Equipo equipo) {
		this.equipo = equipo;
	}

	public Usuario getResponsable() {
		return responsable;
	}

	public void setResponsable(Usuario responsable) {
		this.responsable = responsable;
	}

	public Equipo getEquipoAnterior() {
		return equipoAnterior;
	}

	public void setEquipoAnterior(Equipo equipoAnterior) {
		this.equipoAnterior = equipoAnterior;
	}

	public Usuario getResponsableAnterior() {
		return responsableAnterior;
	}

	public void setResponsableAnterior(Usuario responsableAnterior) {
		this.responsableAnterior = responsableAnterior;
	}

	public Estado getEstado() {
		return estado;
	}

	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	public TipoBanca getTipoBanca() {
		return tipoBanca;
	}

	public void setTipoBanca(TipoBanca tipoBanca) {
		this.tipoBanca = tipoBanca;
	}

	public Ans getAns() {
		return ans;
	}

	public void setAns(Ans ans) {
		this.ans = ans;
	}

	public Valor getMotivoCancelar() {
		return motivoCancelar;
	}

	public void setMotivoCancelar(Valor motivoCancelar) {
		this.motivoCancelar = motivoCancelar;
	}

	public String getCodigoRegionTerritorio() {
		return codigoRegionTerritorio;
	}

	public void setCodigoRegionTerritorio(String codigoRegionTerritorio) {
		this.codigoRegionTerritorio = codigoRegionTerritorio;
	}

	public String getNombreRegionTerritorio() {
		return nombreRegionTerritorio;
	}

	public int getEmpresaTop() {
		return empresaTop;
	}

	public void setEmpresaTop(int empresaTop) {
		this.empresaTop = empresaTop;
	}

	public void setNombreRegionTerritorio(String nombreRegionTerritorio) {
		this.nombreRegionTerritorio = nombreRegionTerritorio;
	}

	public String getCodigoOficina() {
		return codigoOficina;
	}

	public void setCodigoOficina(String codigoOficina) {
		this.codigoOficina = codigoOficina;
	}

	public String getNombreOficina() {
		return nombreOficina;
	}

	public void setNombreOficina(String nombreOficina) {
		this.nombreOficina = nombreOficina;
	}

	public Boolean getLeido() {
		return leido;
	}

	public void setLeido(Boolean leido) {
		this.leido = leido;
	}

	public Date getFechaEstado() {
		return fechaEstado;
	}

	public void setFechaEstado(Date fechaEstado) {
		this.fechaEstado = fechaEstado;
	}

	@Override
	public String toString() {
		return "Solicitud [id=" + id + ", cargo=" + cargo + ", empresa="
				+ empresa + ", monto=" + monto + ", numero=" + numero
				+ ", clasificacionSBS=" + clasificacionSBS
				+ ", clasificacionBBVA=" + clasificacionBBVA + ", moneda="
				+ moneda + ", cliente=" + cliente + ", segmento=" + segmento
				+ ", equipo=" + equipo + ", responsable=" + responsable
				+ ", equipoAnterior=" + equipoAnterior
				+ ", responsableAnterior=" + responsableAnterior + ", estado="
				+ estado + ", tipoBanca=" + tipoBanca + ", ans=" + ans
				+ ", motivoCancelar=" + motivoCancelar
				+ ", codigoRegionTerritorio=" + codigoRegionTerritorio
				+ ", nombreRegionTerritorio=" + nombreRegionTerritorio
				+ ", codigoOficina=" + codigoOficina + ", nombreOficina="
				+ nombreOficina + ", empresaTop=" + empresaTop + ", leido="
				+ leido + ", fechaEstado=" + fechaEstado + "]";
	}

}